﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Class DynamicClassFactory
   </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Class DynamicClassFactory
   ">
    <meta name="generator" content="docfx 2.59.4.0">
    
    <link rel="shortcut icon" href="../favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    <meta property="docfx:rel" content="../">
    
  </head>
  <body data-spy="scroll" data-target="#affix" data-offset="120">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="../index.html">
                <img id="logo" class="svg" src="../logo.svg" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list">Search Results for <span></span></div>
          <div class="sr-items">
            <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
          </div>
          <ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="System.Linq.Dynamic.Core.DynamicClassFactory">
  
  
  <h1 id="System_Linq_Dynamic_Core_DynamicClassFactory" data-uid="System.Linq.Dynamic.Core.DynamicClassFactory" class="text-break">Class DynamicClassFactory
  </h1>
  <div class="markdown level0 summary"><p>A factory to create dynamic classes, based on <a href="http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary">http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary</a>.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">Object</a></div>
    <div class="level1"><span class="xref">DynamicClassFactory</span></div>
  </div>
  <div class="inheritedMembers">
    <h5>Inherited Members</h5>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring#system-object-tostring">Object.ToString()</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">Object.Equals(Object)</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">Object.Equals(Object, Object)</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals#system-object-referenceequals(system-object-system-object)">Object.ReferenceEquals(Object, Object)</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode#system-object-gethashcode">Object.GetHashCode()</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype#system-object-gettype">Object.GetType()</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone#system-object-memberwiseclone">Object.MemberwiseClone()</a>
    </div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="System.Linq.Dynamic.Core.html">System.Linq.Dynamic.Core</a></h6>
  <h6><strong>Assembly</strong>: System.Linq.Dynamic.Core.dll</h6>
  <h5 id="System_Linq_Dynamic_Core_DynamicClassFactory_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static class DynamicClassFactory</code></pre>
  </div>
  <h3 id="methods">Methods
  </h3>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/StefH/System.Linq.Dynamic.Core/new/master/apiSpec/new?filename=System_Linq_Dynamic_Core_DynamicClassFactory_CreateGenericComparerType_System_Type_System_Type_.md&amp;value=---%0Auid%3A%20System.Linq.Dynamic.Core.DynamicClassFactory.CreateGenericComparerType(System.Type%2CSystem.Type)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/StefH/System.Linq.Dynamic.Core/blob/master/src/System.Linq.Dynamic.Core/DynamicClassFactory.cs/#L92">View Source</a>
  </span>
  <a id="System_Linq_Dynamic_Core_DynamicClassFactory_CreateGenericComparerType_" data-uid="System.Linq.Dynamic.Core.DynamicClassFactory.CreateGenericComparerType*"></a>
  <h4 id="System_Linq_Dynamic_Core_DynamicClassFactory_CreateGenericComparerType_System_Type_System_Type_" data-uid="System.Linq.Dynamic.Core.DynamicClassFactory.CreateGenericComparerType(System.Type,System.Type)">CreateGenericComparerType(Type, Type)</h4>
  <div class="markdown level1 summary"><p>Create a GenericComparerType based on the GenericType and an instance of a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.icomparer">IComparer</a>.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Type CreateGenericComparerType(Type comparerGenericType, Type comparerType)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.type">Type</a></td>
        <td><span class="parametername">comparerGenericType</span></td>
        <td><p>The GenericType</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.type">Type</a></td>
        <td><span class="parametername">comparerType</span></td>
        <td><p>The <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.icomparer">IComparer</a> instance</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.type">Type</a></td>
        <td><p>Type</p>
</td>
      </tr>
    </tbody>
  </table>
  <span class="small pull-right mobile-hide">
    <span class="divider">|</span>
    <a href="https://github.com/StefH/System.Linq.Dynamic.Core/new/master/apiSpec/new?filename=System_Linq_Dynamic_Core_DynamicClassFactory_CreateType_System_Collections_Generic_IList_System_Linq_Dynamic_Core_DynamicProperty__System_Boolean_.md&amp;value=---%0Auid%3A%20System.Linq.Dynamic.Core.DynamicClassFactory.CreateType(System.Collections.Generic.IList%7BSystem.Linq.Dynamic.Core.DynamicProperty%7D%2CSystem.Boolean)%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">Improve this Doc</a>
  </span>
  <span class="small pull-right mobile-hide">
    <a href="https://github.com/StefH/System.Linq.Dynamic.Core/blob/master/src/System.Linq.Dynamic.Core/DynamicClassFactory.cs/#L173">View Source</a>
  </span>
  <a id="System_Linq_Dynamic_Core_DynamicClassFactory_CreateType_" data-uid="System.Linq.Dynamic.Core.DynamicClassFactory.CreateType*"></a>
  <h4 id="System_Linq_Dynamic_Core_DynamicClassFactory_CreateType_System_Collections_Generic_IList_System_Linq_Dynamic_Core_DynamicProperty__System_Boolean_" data-uid="System.Linq.Dynamic.Core.DynamicClassFactory.CreateType(System.Collections.Generic.IList{System.Linq.Dynamic.Core.DynamicProperty},System.Boolean)">CreateType(IList&lt;DynamicProperty&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>The CreateType method creates a new data class with a given set of public properties and returns the System.Type object for the newly created class. If a data class with an identical sequence of properties has already been created, the System.Type object for this class is returned.<br>
Data classes implement private instance variables and read/write property accessors for the specified properties.Data classes also override the Equals and GetHashCode members to implement by-value equality.
Data classes are created in an in-memory assembly in the current application domain. All data classes inherit from <a class="xref" href="System.Linq.Dynamic.Core.DynamicClass.html">DynamicClass</a> and are given automatically generated names that should be considered private (the names will be unique within the application domain but not across multiple invocations of the application). Note that once created, a data class stays in memory for the lifetime of the current application domain. There is currently no way to unload a dynamically created data class.
The dynamic expression parser uses the CreateClass methods to generate classes from data object initializers. This feature in turn is often used with the dynamic Select method to create projections.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Type CreateType(IList&lt;DynamicProperty&gt; properties, bool createParameterCtor = true)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1">IList</a>&lt;<a class="xref" href="System.Linq.Dynamic.Core.DynamicProperty.html">DynamicProperty</a>&gt;</td>
        <td><span class="parametername">properties</span></td>
        <td><p>The DynamicProperties</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">Boolean</a></td>
        <td><span class="parametername">createParameterCtor</span></td>
        <td><p>Create a constructor with parameters. Default set to true. Note that for Linq-to-Database objects, this needs to be set to false.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.type">Type</a></td>
        <td><p>Type</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 id="System_Linq_Dynamic_Core_DynamicClassFactory_CreateType_System_Collections_Generic_IList_System_Linq_Dynamic_Core_DynamicProperty__System_Boolean__examples">Examples</h5>
  <pre><code>DynamicProperty[] props = new DynamicProperty[] { new DynamicProperty(&quot;Name&quot;, typeof(string)), new DynamicProperty(&quot;Birthday&quot;, typeof(DateTime)) };
Type type = DynamicClassFactory.CreateType(props);
DynamicClass dynamicClass = Activator.CreateInstance(type) as DynamicClass;
dynamicClass.SetDynamicProperty(&quot;Name&quot;, &quot;Albert&quot;);
dynamicClass.SetDynamicProperty(&quot;Birthday&quot;, new DateTime(1879, 3, 14));
Console.WriteLine(dynamicClass);</code></pre>

</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <div class="contribution">
                <ul class="nav">
                  <li>
                    <a href="https://github.com/StefH/System.Linq.Dynamic.Core/new/master/apiSpec/new?filename=System_Linq_Dynamic_Core_DynamicClassFactory.md&amp;value=---%0Auid%3A%20System.Linq.Dynamic.Core.DynamicClassFactory%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" class="contribution-link">Improve this Doc</a>
                  </li>
                  <li>
                    <a href="https://github.com/StefH/System.Linq.Dynamic.Core/blob/master/src/System.Linq.Dynamic.Core/DynamicClassFactory.cs/#L23" class="contribution-link">View Source</a>
                  </li>
                </ul>
              </div>
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
                <h5>In This Article</h5>
                <div></div>
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            
            <span>Generated by <strong>DocFX</strong></span>
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
